Convert attribute value to UTF-8 when passing it to libxml2
authorStephan Bergmann <sbergman@redhat.com>
Wed, 23 Sep 2020 09:41:05 +0000 (11:41 +0200)
committerRene Engelhard <rene@debian.org>
Sun, 3 Jan 2021 17:54:17 +0000 (17:54 +0000)
commit1a9479c3edbb29485b6adc8241d5cdbb2f99f7b0
tree66a05735e8bd9113b6c09950d3dff2ad02f57212
parent40e8cd3107ef3e593ef79f77c4c94adba87a5bfa
Convert attribute value to UTF-8 when passing it to libxml2

Using toUtf8, requiring the OUString to actually contain well-formed data, but
which is likely OK for this test-code--only function, and is also what similar
dumpAsXml functions e.g. in editeng/source/items/textitem.cxx already use.

This appears to have been broken ever since the code's introduction in
553f10c71a2cc92f5f5890e24948f5277e3d2758 "add dumpAsXml() to more pool items",
and it would typically only have written the leading zero or one
(depending on the architecture's endianness) characters.  (I ran across it on
big-endian s390x, where CppunitTest_sd_tiledrendering
SdTiledRenderingTest::testTdf104405 failed because of

> Entity: line 2: parser error : Input is not proper UTF-8, indicate encoding !
> Bytes: 0xCF 0x22 0x2F 0x3E
> ation=""/><SfxPoolItem whichId="4017" typeName="13SvxBulletItem" presentation="%
>                                                                                ^

apparently reported from within libxml2.)

Change-Id: I4b116d3be84098bd8b8a13b6937da70a1ee02c7f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103236
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Jenkins
Gbp-Pq: Name bigendian.diff
oox/source/crypto/AgileEngine.cxx
oox/source/crypto/Standard2007Engine.cxx
svl/source/items/poolitem.cxx
svl/source/misc/msodocumentlockfile.cxx
vcl/qa/cppunit/pdfexport/pdfexport.cxx
vcl/source/filter/png/PngImageReader.cxx